package controllori;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.Timer;

import elementi.giocatori.Giocatore;


public class ControllorePcSenzaMouse extends ControllorePc{

	public static final double COEFFICIENTE_RADIANTI = 0.01745;
	
	private final int ORARIO = 1;
	private final int ANTIORARIO = -1;
	private final int VELOCITA_ROTAZIONE = 15;
	Timer timerAngolo;
	double angolo = 0.0;
	int versoRotazione;
	
	public ControllorePcSenzaMouse(Giocatore giocatore, int [] tasti) {
		super(giocatore, tasti);
		getGiocatore().setCoseno(1);
		getGiocatore().setSeno(0);
		
		timerAngolo = new Timer (40, new TimerAngolo());
	}
	
	private class TimerAngolo implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent arg0) {
			angolo+=versoRotazione*VELOCITA_ROTAZIONE;
			getGiocatore().setCoseno((float)Math.cos(angolo*COEFFICIENTE_RADIANTI));
			getGiocatore().setSeno((float)Math.sin(angolo*COEFFICIENTE_RADIANTI));
		}
	}
	
	private void setVersoRotazione (int verso) {
		versoRotazione = verso;
	}
	
	@Override
	public void keyPressed(KeyEvent e) {
		int key = e.getKeyCode();
		
		if(key == getTasti()[7]) {
			setVersoRotazione(ANTIORARIO);
			timerAngolo.start();
		}
		
		if(key == getTasti()[8]){
			setVersoRotazione(ORARIO);
			timerAngolo.start();
		}
		
		super.keyPressed(e);
	}
	
	@Override
	public void keyReleased(KeyEvent e) {
		int key = e.getKeyCode();
		
		if(key == getTasti()[7] || key == getTasti()[8]){
			timerAngolo.stop();
		}
		
		super.keyReleased(e);
	}
}